package com.gtw.pattern.simple.commonfactory;

import com.gtw.pattern.simple.Product;

/**
 * 优点:
 *      1.良好的封装性,代码结构清晰,只需要知道具体创建对象的类名就可以创建该对象
 *      2.扩展性非常优秀,在增加产品类的时候,只需要修改具体的工厂类或扩展一个工厂类
 *      3.屏蔽产品类,产品类如何变化调用者都不需要关心
 * 使用场景:
 *      1.在所有生成对象的地方都可以考虑使用,但需要谨慎考虑是否需要增加一个工厂类进行管理,增加代码复杂度
 *      2.需要灵活可扩展的框架时,万物皆产品类
 */
public abstract class Creator {
    public abstract <T extends Product> T createProduct(Class<T> c);
}
